#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@NAME          : inidata.py
@TIME          : 2024/12/12 17:25:20
@AUTHOR        : chenlip
@VERSION       : 0.0.1
@DESCRIPTION   : 用于初始化数据库, 用于Flask初始化时创建或连接数据库
'''
# --------------------------引用--------------------------
import os, sys, json
import sqlite3
from sqlalchemy import create_engine

from app.models.mediares import MBase
# --------------------------引用--------------------------

class initdb:
    '''
        用于初始化数据库, 用于Flask初始化时创建或连接数据库
        # 功能说明
        - 用于初始化数据库, 用于Flask初始化时创建或连接数据库或者手工执行创建数据库和数据表

        # 使用依赖
        - models.mediares.py
        - sqlalchemy

    '''
    def __init__(self, dbtype:str='sqlite', dbname:str='mediares.db'):
        '''
            初始化数据库
            如果数据库sqlite不存在，则在项目的data目录下创建一个新的数据库(mediares.db)
            :Args:
                - dbtype: 数据库类型
                - dbname: 数据库名
        '''
        self.dbtype = dbtype
        self.dbname = dbname
        self.dbpath = os.path.join(os.path.dirname(__file__), dbname)
        if dbtype == 'sqlite':
            # 创建数据库
            self.engine = create_engine(f'sqlite:///{self.dbpath}', echo=True)
            # 检查数据库中是否存在定义的数据表，如果不存在则创建它们
            MBase.metadata.create_all(self.engine)
        else:
            print(f'不支持的数据库类型:{dbtype}')

